package xyz.jcat.mybatis;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import org.springframework.beans.factory.annotation.Autowired;
import xyz.jcat.common.util.CollectionUtils;

import java.io.Serializable;
import java.util.List;

public class ServiceImpl<D extends IBaseDao<P>, P> implements IService<P> {

    @Autowired
    protected D dao;

    @Override
    public boolean insert(P p) {
        return SqlHelper.retBool(dao.insert(p));
    }

    @Override
    public int insertBatch(List<P> p) {
        return dao.insertBatch(p);
    }

    @Override
    public boolean deleteById(Serializable id) {
        return SqlHelper.retBool(dao.deleteById(id));
    }

    @Override
    public boolean updateById(P p) {
        return SqlHelper.retBool(dao.updateById(p));
    }

    @Override
    public P getById(Serializable id) {
        return dao.selectById(id);
    }

    @Override
    public List<P> getByIds(List<Serializable> ids) {
        return dao.selectBatchIds(ids);
    }

    protected P getOne(Wrapper<P> wrapper) {
        List<P> list = dao.selectList(wrapper);
        if(CollectionUtils.isNotEmpty(list)) {
            return list.get(0);
        }
        return null;
    }
}
